home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 2
/
Aminet AMIGA CDROM (1994)(Walnut Creek)[Feb 1994][W.O. 44790-1].iso
/
Aminet
/
dev
/
amos
/
jdlib4_6.lha
/
Progs
/
JD_Datei.AMOS
/
JD_Datei.amosSourceCode
Wrap
AMOS Source Code
|
2008-12-10
|
50KB
|
1,927 lines
Set Buffer 150
Break Off
VS#=0.0
SETUP
TMJ$= Extension_22_004C
LAST=2000 : MF=9
Reserve Zone 40
Dim S$(LAST),ME$(16),PO$(12),N$(MF),A$(MF),MM$(MF),A2$(MF),B$(MF),NB$(MF),SX$(MF),REP$(MF)
Dim PRLEN(MF),PRAB(MF),MXLEN(MF),MXLEN2(MF),NEU(MF),MLEN(MF),PRLEN2(MF),PRAB2(MF),SB(61)
Global ME$(),KK,AF,ML,NR,MX,B1,B2,SF,B1,B2,FELEN,RGBO,BC,FC,AKT
Gosub CLEAR
AKT=0 : SOF=0
MA:
Curs Off
Cls 1
MA2:
Ink 2 : Curs Off
B1=1 : B2=MX
SF=0
AUTOSAVE
Restore HM : Gosub RD
If AKT=0 Then If IN=3 or IN=4 or IN=5 or IN=11 or IN=12 or IN=13 or IN=15 Then AKT=1 : SOF=0 : Timer=0
If AKT=0 Then If IN=8 Then AKT=1 : Timer=0
On IN Goto LA,BL,DA,EG,SO,DRU,FW,UP,SP,SU,MAE,AEN,ID,FL,IM,EN
UP:
If S$(1)=Chr$(255) Then Goto KEINEDATEN
AUTOSAVE
If SOTE=0 Then Cls 1 : Locate 1,3 : Under On : Centre "Update" : Under Off
Show : Change Mouse 3
If SOTE=0 Then Print : Print : Print "Phase 1"
FELEN=0
For ZZX=1 To AF
FELEN=Max(Len(N$(ZZX)),FELEN)
MXLEN(ZZX)=0 : PRLEN(ZZX)=0
Next ZZX
If SOTE=0 Then Print "Phase 2"
For NR=1 To MX
Gosub MAKEFELDER
For ZZX=1 To AF
MXLEN(ZZX)=Max(Len(A$(ZZX)),MXLEN(ZZX))
MXLEN(ZZX)=Max(Len(N$(ZZX)),MXLEN(ZZX))
Next ZZX
Next NR
If SOTE=0 Then Print "Phase 3"
For ZZX=1 To AF
PRLEN(ZZX)=Max(Len(N$(ZZX)),PRLEN(ZZX))
PRLEN(ZZX)=Max(PRLEN(ZZX),MXLEN(ZZX))
Next ZZX
If SOTE=0 Then Print "Phase 4"
Gosub LCOUNT
Change Mouse 1 : Hide
If SOTE=1 Then Return Else Goto MA
EN:
E=0 : If AKT<>0 Then Wait 5 : REQUESTER["Programm wirklich beenden?","Ja","Nein"] : E=Param
If E=2 Then Goto MA
End
LA:
If S$(1)<>Chr$(255) Then Goto SCHONDATEI
MEMCLR:
Gosub CLEAR
LADEDEG:
Cls 1 : Clear Key
Show
DD$=Fsel$("*.seq","","Datei","laden")
Hide
If DD$="" Then Goto MA
If S$(1)<>Chr$(255) Then Goto ANHAENGEN
On Error Goto SPFEHLER
NR=0
Change Mouse 3
Show
Open In 8,DD$
Input #8,KENN$ : If KENN$<>"JD-Datei-Sequenz" Then Goto FALSCH
Input #8,TMJ2$
Input #8,SOF
Input #8,AF
Input #8,SN
Input #8,BR
For X=1 To AF
Input #8,PRLEN(X)
Input #8,PRAB(X)
Next X
Input #8,FELEN
For X=1 To AF
Input #8,N$(X)
Input #8,MXLEN(X)
Next X
Input #8,DN$
Input #8,MX
If MX=0 Then NR=0 : Goto GELADEN
B1=1 : B2=MX
For NR=1 To 61
Input #8,SB(NR)
Next NR
For NR=1 To MX
On Error Goto LADEFEHLER
POSITION[NR]
Input #8,S$(NR)
Next NR
GELADEN:
Close 8 : Hide : Change Mouse 1
Cls 1 : Locate 5,5 : Print "Es wurde die Datei ";Chr$(34);DN$;Chr$(34);" mit";MX;" Datens�tzen geladen"
If SOF=0 Then Print "Datei ist nicht sortiert" : Goto FGEL
Locate 5,7 : Print "Datei ist nach Feld Nr. ";Right$(Str$(SOF),Len(Str$(SOF))-1);" in ";
If SOF<0 Then Print "absteigender";
If SOF>0 Then Print "aufsteigender";
Print " Reihenfolge sortiert"
FGEL:
Locate 5,9 : Print "Die letzte Speicherung war am: ";TMJ2$
Locate 5,11 : Print "Lade-Fehler:";LF
Locate 5,13 : Print "Freier Speicher:";Free;" Bytes"
Goto RM
SCHONDATEI:
Cls 1 : Locate 1,10 : Centre "Es befindet sich bereits eine Datei im Speicher!" : Print
Restore LM : Gosub RD
On IN Goto MEMCLR,MA,ANHAENGEN
FALSCH:
Close 8 : Hide : Change Mouse 1 : Cls 1
MELDUNG[DD$+" ist keine JD-Datei-Sequenz!"]
Goto LA
ANHAENGEN:
Cls 1
Show : Clear Key
DD$=Fsel$("*.seq","","Datei","anh�ngen")
Hide
If DD$="" Then Goto MA
On Error Goto SPFEHLER
Change Mouse 3 : Show
SOF=0
Open In 8,DD$
Input #8,KENN$ : If KENN$<>"JD-Datei-Sequenz" Then Goto FALSCH
Input #8,TMJ3$ : TMJ2$= Extension_22_03A0(TMJ3$,TMJ2$)
Input #8,SOF
Input #8,AF2 : If AF2>AF Then Gosub ANH2 : ZV=1
Input #8,SN
Input #8,BR
For NR=1 To AF2
Input #8,PRLEN2(NR) : PRLEN(NR)=Max(PRLEN(NR),PRLEN2(NR))
Input #8,PRAB2(NR) : PRAB(NR)=Max(PRAB2(NR),PRAB(NR))
Next NR
Input #8,FELEN2 : FELEN=Max(FELEN,FELEN2)
If ZV=0 Then For X=1 To AF2 : Input #8,M$ : Input #8,MXLEN2(X) : Next X
If ZV=1 Then For X=1 To AF2 : Input #8,N$(X) : Input #8,MXLEN2(X) : Next X
If ZV=1 Then AF=AF2 : ZV=0
Input #8,DN$
Input #8,MX2
If MX2=0 Then NR=0 : Goto ANHEND
If MX+MX2>LAST Then MX2=LAST-MX : ZV=1
B1=1 : B2=MX+MX2
For NR=1 To 61
Input #8,SB2
Next
For NR=MX+1 To MX+MX2
On Error Goto LADEFEHLER
POSITION[NR]
Input #8,S$(NR)
Next NR
If AF2=>AF Then Goto ANCON
For NR=MX+1 To MX+MX2
For X=AF2+1 To AF
S$(NR)=S$(NR)+" |"
Next X
Next NR
ANCON:
For X=1 To AF
MXLEN(X)=Max(MXLEN(X),MXLEN2(X))
Next X
ANHEND:
Close 8 : Gosub LCOUNT : Hide : Change Mouse 1
MX=MX+MX2
Cls 1 : Locate 5,5 : Print "Es wurde die Datei ";Chr$(34);DD$;Chr$(34);" mit";MX2;" Datens�tzen angehangen"
If ZV=1 Then Print : Centre "Die komplette Datei konnte leider nicht angehangen werden!"
Print : Print "Freier Speicher:";Free;" Bytes"
Goto FGEL
ANH2:
For NR=1 To MX
For X=AF+1 To AF2
S$(NR)=S$(NR)+" |"
Next X
Next NR
Return
Goto LADEDEG
KONV_FEHLER:
Cls 1 : Home
Print : Centre "Konvertierungs-Fehler" : Gosub RY
Resume Label MA
LADEFEHLER:
S$(NR)="Lade-Fehler"
Inc LF
Resume Next
SP:
If S$(1)=Chr$(255) Then Goto KEINEDATEN
Cls 1
If PRLEN(1)=0 Then KLARO=1 : Gosub PREF
Gosub LONG
SPEICHERDEG:
Clear Key
Show : DD$=Fsel$("*.seq","","Datei","Speichern") : Hide
If DD$="" Then Goto MA
PFAD$=Left$(DD$,Instr(DD$,":"))
CUR$=Dir$
Dir$=PFAD$
Restore MEM
Read Y
MEMO=0
For X=1 To Y
Read MEM$
If PFAD$=MEM$ Then MEMO=1
Next
If MEMO=1 Then Goto MEMCON
If DILEN+5120>Dfree Then REQUESTER["WARNUNG! Datei braucht mehr Speicherplatz als auf Disk vorhanden.","Andere Diskette eingelegt!","Abbruch!"]
If Param=2 Then Goto MA
MEMCON:
Dir$=CUR$
If Right$(DD$,4)<>".seq" Then DD$=DD$+".seq"
If Exist(DD$) Then Goto DEX
UEBERSCHREIBEN:
On Error Goto SPFEHLER
NR=0
If DN$="" Then DN$=DD$
SPEICHERWEITER:
NR=0
Change Mouse 3 : Show : Open Out 8,DD$
Print #8,"JD-Datei-Sequenz"
Print #8,TMJ$
Print #8,SOF
Print #8,AF
Print #8,SN
Print #8,BR
For NR=1 To AF
Print #8,PRLEN(NR)
Print #8,PRAB(NR)
Next NR
Print #8,FELEN
For NR=1 To AF
Print #8,N$(NR)
Print #8,MXLEN(NR)
Next NR
Print #8,DN$
Print #8,MX
For NR=1 To 61
Print #8,SB(NR)
Next NR
For NR=1 To MX
POSITION[NR]
Print #8,S$(NR)
Next NR
Close 8 : Hide : Change Mouse 1
Cls 1 : Locate 7,5 : Print "Datei-Name: "+DN$+" File-Name: "+DD$
Locate 7,7 : Print "Es wurden";MX;" Datens�tze gesichert!"
Locate 7,9 : Print "Freier Speicher:";Free;" Bytes"
AKT=0 : Goto RM
DEX:
Cls 1 : DD2$=DD$+"-Filename ist schon vergeben!"
Locate 1,10
Centre DD2$
Restore SM : Gosub RD
Cls 1 : On IN Goto UEBERSCHREIBEN,SPEICHERDEG
SPFEHLER:
If Errn=81 Then Locate 1,19 : Centre "FEHLER - Volume existiert nicht!"
If Errn=82 and SPI=0 Then Locate 1,19 : Centre "FEHLER - Datei existiert nicht!"
If Errn=89 Then Locate 1,19 : Centre "FEHLER - Datendiskette ist voll!" : Locate 1,21 : Centre "Bitte Diskette wechseln"
If Errn=87 Then Locate 1,19 : Centre "FEHLER - Device existiert nicht!"
If Errn=84 Then Locate 1,19 : Centre "--- Disk ist schreibgesch�tzt ---" : Locate 1,21 : Centre "- Bitte Schreibschutz entfernen -"
If Errn=95 Then Locate 19,1 : Centre "FEHLER - Device nicht ansprechbar!" : Locate 21,1 : Centre "Bitte Diskette einlegen!"
P= Extension_22_01C4("")
If P=27 Then Resume Label MA
If Errn=82 Then Resume Label LADEDEG
If Errn=87 and SPI=1 Then Resume Label SPEICHERDEG
If Errn=87 Then Resume Label LADEDEG
If Errn=89 Then Resume Label SPEICHERDEG
If Errn=84 Then Resume Label SPEICHERDEG
If Errn=81 and SPI=1 Then Resume Label SPEICHERDEG
If Errn=81 Then Resume Label LADEDEG
Print Errn : Error(Errn) : Stop
BL:
If S$(1)=Chr$(255) Then Goto KEINEDATEN
Cls 1
Restore BM : Gosub RD
NR=1 : Z=1
B1=1 : B2=MX
On IN Goto BLALL,BLGEZ,BLBER,BLLIST,MA
BLGEZ:
Locate 15,15 : Print "Welcher Buchstabe? ";
A$=Chr$( Extension_22_01C4("")) : Print A$
Y$="0123456789 A�BCDEFGHIJKLMNO�PQRSTU�VWXYZ&!@#$%*()+-='<>?,.:;/"
Z=Instr(Y$,A$)-1
If SOF=1 Then If Z=0 Then NR=1 : Goto BLFIND
If SOF=-1 Then Z=Z+1
If Abs(SOF)=1 Then For Y=1 To Z : NR=NR+SB(Y) : Next Y
If SOF=-1 Then NR=MX-NR
BLFIND:
If SOF=1 and(Left$(Upper$(S$(NR)),1)>A$) Then MELDUNG["Suche beendet!"] : Goto BL
If SOF=-1 and(Left$(Upper$(S$(NR)),1)<A$) Then MELDUNG["Suche beendet!"] : Goto BL
If Extension_22_0080(NR,1,MX)=0 Then MELDUNG["Suche beendet!"] : Goto BL
POSITION[NR]
If Left$(Upper$(S$(NR)),1)<>A$ Then NR=NR+Z : Goto BLFIND
K1:
Gosub SH
GC[1] : Z=Param
Gosub ZSPEC
If Z=5196 or Z=5076 Then Goto K1
If Z=5000 Then Goto BL
NR=NR+Z
Goto BLFIND
BLALL:
NR=Max(NR,1)
NR=Min(NR,MX)
K2:
Gosub SH
GC[1] : Z=Param
Gosub ZSPEC
If Z=5196 or Z=5076 Then Goto K2
If Z=5000 Then Goto BL
NR=NR+Z
Goto BLALL
BLBER:
Locate 18,15 : Input "Bereich: ";BB$
If BB$="" Then Goto BL
Gosub BEREICH
If B1=0 Then Goto BL
BLBERN:
NR=Max(NR,B1)
NR=Min(NR,B2)
K3:
Gosub SH
GC[1] : Z=Param
Gosub ZSPEC
If Z=5196 or Z=5076 Then Goto K3
If Z=5000 Then Goto BL
NR=NR+Z
Goto BLBERN
BLLIST:
KK=1
ANR=1
BLIST:
Cls 1 : Gosub BLTITEL
NR=ANR
NR=Min(NR,MX-19)
NR=Max(NR,1)
ANR=NR
ZEILE=1
Locate 0,2
BLISNE:
If ZEILE>20 Then Goto CURSOR
If NR>MX Then Goto LEER
Gosub MAKEFELDER
Gosub BLIAUSDRUCK
LEER:
Print
Inc NR
Inc ZEILE
Goto BLISNE
CURSOR:
Print "Stand: ";
If AKT=1 Then Print TMJ$;
If AKT=0 Then Print TMJ2$;
Print Space$(12);
Print "Satz Nr.";ANR;" bis Satz Nr.";ANR+19
Polyline 1,15 To 704,15
Polyline 1,175 To 704,175
GC[0] : Z=Param
If Z=5000 Then Goto BL
If Z=5033 Then Z=0
ANR=ANR+Z
Goto BLIST
BLTITEL:
Locate 0,1
L=0
For X=KK To AF
L=L+MXLEN(X)+2
If L<=84 Then ML=X
Next X
For X=KK To ML-1
Print N$(X);Space$(MXLEN(X)-Len(N$(X))+2);
Next X
Print N$(X)
Return
BLIAUSDRUCK:
For X=KK To ML-1
T$= Extension_22_006C(A$(X),"{",",")
Print T$;Space$(MXLEN(X)-Len(A$(X))+2);
Next X
T$= Extension_22_006C(A$(X),"{",",")
Print T$;
Return
SU:
If S$(1)=Chr$(255) Then Goto KEINEDATEN
Cls 1
AUTOSAVE
B1=1 : B2=MX
NR=0 : NLR=0
SF=1
Restore SUM : Gosub RD
On IN Goto MA,SUOK,SUMIT
SUFE:
Cls 1 : Locate 1,1 : ZX=IN-3 : Print N$(ZX)+": ";
IN$= Extension_22_024E("",60) : If IN$="" Then Goto SU
If Extension_22_005A(IN$,"*")>2 Then Goto SU
WORKING : Gosub SPECIAL
JOK=0
If Left$(IN$,1)="*" Then JOK=1
If Left$(IN$,1)="?" Then JOK=1
NR=1 : Z=1
If JOK=1 Then Goto SUFENEXT
Y$="0123456789 A�BCDEFGHIJKLMNO�PQRSTU�VWXYZ&!@#$%*()+-='<>?,.:;/"
SZ=Instr(Y$,Left$(IN$,1))-1
If SOF=ZX Then If SZ=0 Then NR=1 : Goto SUFENEXT
If SOF=ZX*(-1) Then SZ=SZ+1
If Abs(SOF)=ZX
For SY=1 To SZ
NR=NR+SB(SY)
Next SY
End If
If SOF=ZX*(-1) Then NR=MX-NR
SUFENEXT:
Change Mouse 3
Gosub MAKEFELDER
POSITION[NR]
P= Extension_22_0080(NR,1,MX)
If SOF=ZX*(-1) and JOK=0 and NLR=0 Then If Left$(A$(ZX),1)<Left$(IN$,1) Then Goto SUFENICHT
If SOF=ZX and JOK=0 and NLR=0 Then If Left$(A$(ZX),1)>Left$(IN$,1) Then Goto SUFENICHT
If P=0 and NLR=0 Then Goto SUFENICHT
If SOF=ZX*(-1) and JOK=0 Then If Left$(A$(ZX),1)<Left$(IN$,1) Then NR=NLR : Bell : Goto SUFEND
If SOF=ZX and JOK=0 Then If Left$(A$(ZX),1)>Left$(IN$,1) Then NR=NLR : Bell : Goto SUFEND
If P=0 Then NR=NLR : Bell : Goto SUFEND
If Inkey$=Chr$(27) Then Change Mouse 1 : Goto SU
IN= Extension_22_0006(Upper$(A$(ZX)),Upper$(IN$))
If IN=0 Then NR=NR+Z : Goto SUFENEXT
NLR=NR
SUFEND:
Gosub SH
GC[1] : Z=Param
Gosub ZSPEC
If Z=5196 or Z=5076 Then Goto SUFEND
If Z=5000 Then Goto SU
Z=Max(Z,-1)
Z=Min(Z,1)
NR=NR+Z
Goto SUFENEXT
SUOK:
Cls 1 : Locate 5,5 : Print "Such-Begriff: ";
IN$= Extension_22_024E("",60) : If IN$="" Then Goto SU
If Extension_22_005A(IN$,"*")>2 Then Goto SU
WORKING
NR=1 : Z=1
SUNEXTOK2:
Change Mouse 3
POSITION[NR]
P= Extension_22_0080(NR,1,MX) : If P=0 and NLR=0 Then Goto SUFENICHT
If P=0 Then NR=NLR : Bell : Goto SUOEND
If Inkey$=Chr$(27) Then Change Mouse 1 : Goto SU
Gosub MAKEFELDER
ZX=0
SUNEXTOK:
Inc ZX
If ZX>AF Then NR=NR+Z : Goto SUNEXTOK2
IN= Extension_22_0006(Upper$(A$(ZX)),Upper$(IN$))
If IN=0 Then Goto SUNEXTOK
NLR=NR
SUOEND:
Gosub SH
GC[1] : Z=Param
Gosub ZSPEC
If Z=5196 or Z=5076 Then Goto SUOEND
If Z=5000 Then Goto SU
Z=Max(Z,-1)
Z=Min(Z,1)
NR=NR+Z
Goto SUNEXTOK2
SUMIT:
Cls 1 : MM=0 : Locate 5,5
JOK=0
For X=1 To AF
MM$(X)=""
Print : Print N$(X)+Space$(FELEN-Len(N$(X)))+": ";
IN$= Extension_22_024E("",60) : Gosub SPECIAL
If IN$<>"" Then MM$(X)=IN$ : Inc MM
If X=Abs(SOF) and(Left$(IN$,1)="*") Then JOK=1
If X=Abs(SOF) and(Left$(IN$,1)="?") Then JOK=1
Next X
WORKING
NR=1 : Z=1
If JOK=1 Then Goto SUMITNE
Follow
X=Abs(SOF)
If MM$(X)="" Then Goto SUMITNE
Y$="0123456789 A�BCDEFGHIJKLMNO�PQRSTU�VWXYZ&!@#$%*()+-='<>?,.:;/"
SZ=Instr(Y$,Left$(MM$(X),1))-1
If SOF>0 Then If SZ=0 Then NR=1 : Goto SUMITNE
If SOF<0 Then SZ=SZ+1
For SY=1 To SZ
NR=NR+SB(SY)
Next SY
If SOF<0 Then NR=MX-NR
SUMITNE:
Change Mouse 3
POSITION[NR]
Gosub MAKEFELDER
P= Extension_22_0080(NR,1,MX)
If SOF<0 and JOK=0 and NLR=0 Then If Left$(A$(SOF*(-1)),1)<Left$(MM$(SOF*(-1)),1) Then Goto SUFENICHT
If SOF>0 and JOK=0 and NLR=0 Then If Left$(A$(SOF),1)>Left$(MM$(SOF),1) Then Goto SUFENICHT
If P=0 and NLR=0 Then Goto SUFENICHT
If SOF<0 and JOK=0 Then If Left$(A$(SOF*(-1)),1)<Left$(MM$(SOF*(-1)),1) Then NR=NLR : ININ=MM : Bell : Goto SUMIEND
If SOF>0 and JOK=0 Then If Left$(A$(SOF),1)>Left$(MM$(SOF),1) Then NR=NLR : ININ=MM : Bell : Goto SUMIEND
If P=0 Then NR=NLR : ININ=MM : Bell : Goto SUMIEND
If Inkey$=Chr$(27) Then Change Mouse 1 : Goto SU
ININ=0
For X=1 To AF
IN=0
If MM$(X)<>"" Then IN= Extension_22_0006(Upper$(A$(X)),Upper$(MM$(X)))
If IN=1 Then Inc ININ
Next X
SUMIEND:
If ININ<>MM Then Goto NY
NLR=NR : Gosub SH : GC[1] : Z=Param : Gosub ZSPEC
If Z=5196 Then Goto SUMIEND
If Z=5000 Then Goto SU
Z=Max(Z,-1)
Z=Min(Z,1)
NY:
NR=NR+Z
Goto SUMITNE
FW:
FC=2 : BC=0
CHANGERGB
Goto MA
HCOP:
PT= Extension_22_06FE
If PT<>0 Then Return
Gosub MAKEFELDER
Gosub INIT
Open Out 4,"PRT:"
For TX=1 To AF
Print #4," ";
T$=N$(TX)
Gosub ADRU
Print #4,Space$(FELEN-Len(N$(TX)))+": ";
T$=A$(TX)
Gosub ADRU
Print #4,""
Next TX
Print #4,""
Close 4
Return
ADRU:
T$= Extension_22_006C(A$(X),"{",",")
T$= Extension_22_006C(T$,Chr$(228),"{")
T$= Extension_22_006C(T$,Chr$(246),"|")
T$= Extension_22_006C(T$,Chr$(252),"}")
T$= Extension_22_006C(T$,Chr$(223),"~")
T$= Extension_22_006C(T$,Chr$(196),"[")
T$= Extension_22_006C(T$,Chr$(214),"\")
T$= Extension_22_006C(T$,Chr$(220),"]")
Print #4,T$;
Return
LOESCHEN:
Dec MX
For X=NR To MX+1
S$(X)=S$(X+1)
Next X
Return
AENDERN:
Gosub MAKEFELDER
AWRONGAE:
Cls 1 : Locate 1,5
For X=1 To AF
AFAEFALSCH:
Locate 1,5+X*2 : Print N$(X)+Space$(FELEN-Len(N$(X)))+": "; : Gosub SDRU : Print Space$(FELEN+3)+""; : INVERS[MXLEN(X)] : Inverse On : IN$= Extension_22_024E("",MXLEN(X)) : Inverse Off
A2$(X)= Extension_22_00D6(IN$)
If A2$(X)="" Then A2$(X)=A$(X) : Locate 0,Y Curs-1 : Print Space$(FELEN+3); : Inverse On : Gosub SDRU : Inverse Off
Next X
Gosub DSLEN
REQUESTER["Eingabe korrekt?","Ja","Nein"]
If Param=2 Then Goto AWRONGAE
For X=1 To AF
A$(X)=A2$(X) : A2$(X)=""
Next X
Gosub MAKESTRING
Goto SH
SDRU:
T$=A$(X)
T$= Extension_22_006C(T$,"{",",")
Print T$
Return
DUPLIZIEREN:
If MX=>LAST Then Return
Inc MX
S$(MX)=S$(NR)
Locate Screen Width/8-Len(NR$)-Len(MX$)-6,1 : Print "Nr.:"+NR$+"/"+MX$
Return
DA:
If S$(1)=Chr$(255) Then Goto ERSTEMASKE
REQUESTER["Datei im Speicher l�schen?","Ja","Nein"]
If Param=2 Then Goto MAE
ERSTEMASKE:
Cls 1 : Locate 1,2 : Under On : Centre "Datei-Aufbau" : Under Off
Gosub CLEAR
MX=0
Locate 10,5 : Input "Datei-Name: ";DN$
Curs Off : Locate 10,7 : Print "Anzahl der Felder (2-9) "; : AF$=Chr$( Extension_22_01C4("23456789")) : AF=Val(AF$)
Print AF$ : Print
For X=1 To AF
Print "Feld-Nr.";X;":"; : Input N$(X)
If N$(X)="" Then N$(X)="Feld"+Str$(X)
Next X
FELEN=0
For X=1 To AF
FELEN=Max(Len(N$(X)),FELEN)
MXLEN(X)=(Screen Width/8)-3-FELEN
Next X
If DN$="" Then DN$="Datei-Seq"
REQUESTER["Maske korrekt?","Ja","Nein"]
If Param=2 Then Goto DA
Goto MA
MAE:
If S$(1)=Chr$(255) Then Goto DA
Cls 1 : Locate 1,2 : Under On : Centre "Maske �ndern" : Under Off
Locate 5,4 : Print "Alter Datei-Name: "+DN$+" ";
Input "Neuer Datei-Name: ";NN$ : If NN$<>"" Then DN$=NN$
Print
For X=1 To AF
Print "Feld-Nr.";X;": ";N$(X);Space$(FELEN-Len(N$(X)));" ";
Input "Neuer Name: ";NN$ : If NN$<>"" Then N$(X)=NN$
Next X
FELEN=0
For X=1 To AF
FELEN=Max(Len(N$(X)),FELEN)
Next X
DEL:
Print
If AF=2 Then Goto INST
Print "Soll ein Feld gel�scht werden? (J/N) "; : Z$=Chr$( Extension_22_01C4("JN"))
Print Z$
If Z$="N" Then Goto INST
Input "Welche Feldnummer? ";NN
If NN=0 or NN>AF Then Goto INST
For NR=1 To MX
Gosub MAKEFELDER
If NN=AF Then Goto DEL2
For X=NN+1 To AF
A$(X-1)=A$(X)
MXLEN(X-1)=MXLEN(X)
PRAB(X-1)=PRAB(X)
PRLEN(X-1)=PRLEN(X)
Next X
DEL2:
Dec AF
Gosub MAKESTRING
Inc AF
Next NR
If NN=AF Then Dec AF : Goto DEL
For X=NN+1 To AF
N$(X-1)=N$(X)
PRAB(X-1)=PRAB(X)
PRLEN(X-1)=PRLEN(X)
Next X
Dec AF
FELEN=0
For X=1 To AF
FELEN=Max(Len(N$(X)),FELEN)
Next X
Goto DEL
INST:
If AF=9 Then Goto NEUSORT
Print "Soll ein Feld hinzugef�gt werden? (J/N) ";
Z$=Chr$( Extension_22_01C4("JN")) : Print Z$
If Z$="N" Then Goto NEUSORT
Inc AF
Input "Name des neuen Feldes: ";N$(AF)
If N$(AF)="" Then N$(AF)="Feld"+Str$(AF)
For NR=1 To MX
S$(NR)=S$(NR)+" |"
Next NR
PRAB(AF-1)=2 : PRAB(AF)=0 : PRLEN(AF)=Len(N$(AF)) : MXLEN(AF)=PRLEN(AF)
FELEN=0
For X=1 To AF
FELEN=Max(Len(N$(X)),FELEN)
Next X
Goto INST
NEUSORT:
Print : Print "Soll die Reihenfolge der Felder ge�ndert werden? (J/N) ";
Z$=Chr$( Extension_22_01C4("JN")) : Print Z$
If Z$="N" Then Goto FRAGE
WW$=""
For X=1 To AF
WW$=WW$+Str$(X)
Next X
For X=1 To AF
Print "Alte Feld-Nr.:";X;" Neue Feld-Nummer ";
Z$=Chr$( Extension_22_01C4(WW$)) : NEU(X)=Val(Z$) : Print Z$
Next X
For NR=1 To MX
Gosub MAKEFELDER
For X=1 To AF
For Y=1 To AF
If NEU(X)=Y Then B$(Y)=A$(X)
Next Y
Next X
For X=1 To AF
A$(X)=B$(X) : B$(X)=""
Next X
Gosub MAKESTRING
Next NR
FELDNAMEORDNEN:
For X=1 To AF
For Y=1 To AF
If NEU(X)=Y Then NB$(Y)=N$(X) : PRLEN2(Y)=PRLEN(X) : PRAB2(Y)=PRAB(X) : MXLEN2(Y)=MXLEN(X)
Next Y
Next X
For X=1 To AF
N$(X)=NB$(X) : PRLEN(X)=PRLEN2(X) : PRAB(X)=PRAB2(X) : MXLEN(X)=MXLEN2(X)
Next X
For X=1 To AF-1
If PRAB(X)=0 Then PRAB(X)=2
Next X
PRAB(AF)=0
FRAGE:
REQUESTER["Ist die neue Maske korrekt?","Ja","Nein"]
If Param=2 Then Goto MAE
Goto MA
EG:
Cls 1 : NR=0 : If AF=0 Then MELDUNG["Masken-Aufbau fehlt!"] : Goto MA
EINNEXT:
Cls 1 : If NR>LAST Then Goto DATEIVOLL
AUTOSAVE
BF1=(100*(MX*100))/LAST : BF1=10000-BF1 : BF$=Str$(BF1) : BF$=Left$(BF$,Len(BF$)-2)+"."+Right$(BF$,2)
Locate 1,2 : Print "Speicherkapazit�t:";BF$;"% frei - ";"Freier Arbeitsspeicher:";Free;" Bytes"
If DI=1 Then NR=MX+2 : Print " Satz-Nr.";E : X=1 : Goto EGL
NR=MX+1 : Print " Satz-Nr.";NR : X=1
EGL:
If X<=AF Then Print : Print " "+N$(X)+Space$(FELEN-Len(N$(X)))+": "; : INVERS[MXLEN(X)] : Clear Key : Inverse On : IN$= Extension_22_024E("",MXLEN(X)) : If IN$="" Then IN$=" "
Gosub SPECIAL : IN$= Extension_22_00D6(IN$) : A$(X)=IN$ : Inverse Off
If REP$(1)=" " Then If A$(1)=Chr$(9) Then A$(1)=" "
If A$(1)=" " Then Goto MA
If A$(X)=Chr$(9) Then A$(X)=REP$(X) : Inverse On : Print A$(X) : Inverse Off
REP$(X)=A$(X)
If X<AF Then Inc X : Goto EGL
Gosub DSLEN
Gosub MAKESTRING : If DI Then Return
Inc MX
REQUESTER["Weitere Eingaben?","Ja","Nein"]
If Param=1 Then Inc NR : Goto EINNEXT
Goto MA
SPECIAL:
IN$= Extension_22_006C(IN$,",","{")
Return
DATEIVOLL:
MELDUNG["Datei ist voll!"]
Goto MA
DSLEN:
For X=1 To AF
MXLEN(X)=Max(Len(A$(X))+1,MXLEN(X))
MXLEN(X)=Max(MXLEN(X),Len(N$(X)))
Next X
Return
ZSPEC:
If Z<5001 Then Return
If Z=5072 Then Gosub HCOP
If Z=5076 Then Gosub LOESCHEN : Return
If Z=5196 Then Gosub AENDERN
If Z=5068 Then Gosub DUPLIZIEREN
GC[1] : Z=Param
Return
AEN:
If S$(1)=Chr$(255) Then Goto KEINEDATEN
Cls 1 : Locate 1,3 : Under On : Centre "Daten-Satz �ndern" : Under Off
AUTOSAVE
Locate 17,5 : Input "Satz-Nummer: ";Z
If Extension_22_0080(Z,1,MX)=0 Then Goto MA
NR=Z
Gosub AENDERN : Goto MA
ID:
If S$(1)=Chr$(255) Then Goto KEINEDATEN
Cls 1
AUTOSAVE
Restore DID : Gosub RD
On IN Goto DASADEL,DASAINST,DABEDEL,MA
DASADEL:
Cls 1 : Locate 6,5 : Input "Nummer des zu l�schenden Satzes: ";L
If Extension_22_0080(L,1,MX)=0 Then Goto MA
SATZDEL:
NR=L : Gosub SH
REQUESTER["Datensatz korrekt?","Ja","Nein"]
If Param=2 Then Goto DASADEL
Dec MX
For X=NR To MX+1
S$(X)=S$(X+1)
Next X
Goto REID
DASAINST:
Cls 1 : Locate 5,5 : Input "Nummer vor der eingef�gt werden soll: ";E : Print : Print
If Extension_22_0080(E,1,MX)=0 Then Goto MA
WORKING
NR=E : DI=1 : Gosub EINNEXT : DI=0
For NR=MX To E Step -1
S$(NR+1)=S$(NR)
Next NR
S$(E)=S$(MX+2)
S$(MX+2)=Chr$(255) : Inc MX
WORKOFF
Goto REID
DABEDEL:
Cls 1 : Locate 5,5 : Input "Welcher Bereich soll gel�scht werden: ";LB$
If LB$="" Then Goto MA
If LB$="0" Then Goto MA
WORKING
LB=Instr(LB$,"-")
If LB=0 Then L=Val(LB$) : Goto SATZDEL
If LB=1 Then Goto DELBIS
If LB=Len(LB$) Then Goto DELAB
Goto DELVB
DELBIS:
LB$=Mid$(LB$,2) : NR=Val(LB$)+1
LR=1
For X=NR To MX
S$(LR)=S$(X) : Inc LR
Next X
MX=MX-Val(LB$)
For X=1 To Val(LB$)
S$(MX+X)=Chr$(255)
Next X
WORKOFF
Goto REID
DELAB:
LB=Val(Mid$(LB$,1,Len(LB$)-1))
For X=LB To MX
S$(X)=Chr$(255)
Next X
MX=LB-1
WORKOFF
Goto REID
DELVB:
K1=Val(Mid$(LB$,1,Instr(LB$,"-")-1)) : X=Val(Mid$(LB$,Instr(LB$,"-")+1)) : MX2=X-K1+1 : MX=MX-MX2
For Y=K1 To X
S$(Y)=Chr$(255)
Next Y
Inc X
While S$(X)<>Chr$(255)
S$(K1)=S$(X) : Inc X : Inc K1
Wend
WORKOFF
REID:
Gosub RY : Goto ID
DRU:
If S$(1)=Chr$(255) Then Goto KEINEDATEN
PT= Extension_22_06FE
If PT=252 Then Goto DRUCKEROK
Cls 1
If PT=248 Then REQUESTER["FEHLER - Drucker ist >OFFLINE<","Fehler behoben","Abbruch"]
If PT=255 Then REQUESTER["FEHLER - Drucker ist nicht erreichbar","Fehler behoben","Abbruch"]
If Param=2 Then Goto MA
Goto DRU
DRUCKEROK:
Cls 1
AUTOSAVE
PREF:
If PRLEN(1)=0
SN=0
For X=1 To AF
PRLEN(X)=MXLEN(X)
PRAB(X)=2
Next X
PRAB(AF)=0
GESLEN=0
For X=1 To AF
GESLEN=GESLEN+MXLEN(X)+PRAB(X)
Next X
End If
If PRLEN(1)=0 and GESLEN<41 Then BR=0
If PRLEN(1)=0 and GESLEN>40 and GESLEN<81 Then BR=1
If PRLEN(1)=0 and GESLEN>80 and GESLEN<137 Then BR=2
If PRLEN(1)=0 and GESLEN>136 Then MELDUNG["Achtung !!!"+Chr$(10)+"Bitte Drucker-Preferences einstellen!"] : BR=3
If KLARO=1 Then KLARO=0 : Return
Gosub INIT
Show : Restore DM : Gosub RD : Cls 1 : Locate 5,5
On IN Goto ALLEDRU,DABEDRU,KRIDRU,DRUPREF,MA
DRUPREF:
GESLEN=0
For X=1 To AF
GESLEN=GESLEN+PRLEN(X)+PRAB(X)
Next X
If SN=1 Then GESLEN=GESLEN+7
PO$(1)="Satz-Nummer:" : PO$(2)="Druckbreite:"
For X=1 To AF
PO$(X+2)=N$(X)+Space$(FELEN-Len(N$(X)))
Next X
PREFS:
Hide : Curs Off : Cls 1
PO=1 : PP=0
PRELOP:
Locate 0,5
Print " Satz-Nummer:"
Print
Print " Druckbreite:"
Print
Print " Feld";Space$(FELEN-4);" Feldbreite Feldabstand max. Feldbreite"
Print
For X=1 To AF
Print " ";N$(X);Space$(FELEN-Len(N$(X)));" "; Using "###";PRLEN(X);" "; Using "###";PRAB(X);" "; Using "###";MXLEN(X)
Next X
Print : Print " Gesamtbreite:"; Using "###";GESLEN
Print : Print " ESC = Einstellungen ok"
Y1=(AF+5)*8+65
X1=(FELEN+49)*8
Box 1,70 To X1,Y1
Box 1,82 To X1,Y1-12
Polyline(FELEN+2)*8,70 To(FELEN+2)*8,Y1-12
Polyline(FELEN+16)*8,70 To(FELEN+16)*8,Y1-12
Polyline(FELEN+31)*8,70 To(FELEN+31)*8,Y1-12
Gosub INV2
Goto SHPR
GLO:
Z$=Inkey$ : If Z$="" Then Goto GLO
Z=Asc(Z$) : If Z=27 Then Goto DRU
LOP2:
If Extension_22_0080(Z,28,31)=0 Then Goto GLO
If Z=30 or Z=31 Then Gosub INV
If Z=31 Then Inc PO : If PO>AF+2 Then PO=1
If Z=30 Then Dec PO : If PO<1 Then PO=AF+2
If Z=30 or Z=31 Then Gosub INV2
If PO=1 Then If Z=28 Then Inc SN : If SN=2 Then SN=0
If PO=1 Then If Z=29 Then Dec SN : If SN<0 Then SN=1
If PO=2 Then If Z=28 Then Inc BR : If BR=3 Then BR=0
If PO=2 Then If Z=29 Then Dec BR : If BR<0 Then BR=2
If PO<3 Then Goto SHPR
If PO=AF+2 Then PP=0
If PP=0 Then Locate FELEN+7,PO+8 : Print ">" : Locate FELEN+23,PO+8 : Print " " : Goto FELDER
If PP=1 Then Locate FELEN+7,PO+8 : Print " " : Locate FELEN+23,PO+8 : Print ">" : Goto FELDER
INV:
If PO=1 Then Y=5
If PO=2 Then Y=7
If PO>2 Then Y=PO+8
Locate 1,Y : Inverse Off : Print PO$(PO) : Return
INV2:
If PO=1 Then Y=5
If PO=2 Then Y=7
If PO>2 Then Y=PO+8
Locate 1,Y : Inverse On : Print PO$(PO) : Inverse Off : Return
SHPR:
If SN=0 Then Locate 14,5 : Inverse On : Print "OFF"; : Inverse Off : Print " ON"
If SN=1 Then Locate 14,5 : Inverse Off : Print "OFF "; : Inverse On : Print "ON"
If BR=0 Then Locate 14,7 : Inverse On : Print "40"; : Inverse Off : Print " 80 160 cpl"
If BR=1 Then Locate 14,7 : Inverse Off : Print "40 "; : Inverse On : Print "80"; : Inverse Off : Print " 160 cpl"
If BR=2 Then Locate 14,7 : Inverse Off : Print "40 80 "; : Inverse On : Print "160"; : Inverse Off : Print " cpl"
Gosub ML : Goto GLO
FELDER:
Z$=Inkey$ : If Z$="" Then Goto FELDER
Z=Asc(Z$) : If Z=27 Then Goto DRU
If Z=30 or Z=31 Then Locate FELEN+7,PO+8 : Print " " : Locate FELEN+23,PO+8 : Print " " : Goto LOP2
FELDER2:
If Z=28 Then Inc PP : If PP>1 Then PP=0
If Z=29 Then Dec PP : If PP<0 Then PP=1
If PO=AF+2 and PP=1 Then PP=0 : Goto FELDER
If Z=28 and PP=0 Then Locate FELEN+7,PO+8 : Print ">" : Locate FELEN+23,PO+8 : Print " " : Goto FELDER
If Z=28 and PP=1 Then Locate FELEN+7,PO+8 : Print " " : Locate FELEN+23,PO+8 : Print ">" : Goto FELDER
If Z=29 and PP=0 Then Locate FELEN+7,PO+8 : Print ">" : Locate FELEN+23,PO+8 : Print " " : Goto FELDER
If Z=29 and PP=1 Then Locate FELEN+7,PO+8 : Print " " : Locate FELEN+23,PO+8 : Print ">" : Goto FELDER
If Extension_22_0080(Z,48,57)=0 Then Goto FELDER
TEST:
If PP=1 Then Goto TEST1
Locate FELEN+8,PO+8 : ZZ= Extension_22_01D6(Z,2)
ZZ=Max(ZZ,MXLEN(PO-2))
PRLEN(PO-2)=ZZ
Locate FELEN+8,Y Curs : Print Using "###";PRLEN(PO-2)
Gosub ML
Locate FELEN+7,PO+8 : Print ">" : Goto FELDER
TEST1:
If PO=AF+2 Then Z=28 : Goto FELDER2
Locate FELEN+24,PO+8 : ZZ= Extension_22_01D6(Z,1)
If ZZ=0 Then ZZ=1
PRAB(PO-2)=ZZ
Locate FELEN+24,Y Curs : Print PRAB(PO-2)
Gosub ML
Locate FELEN+23,PO+8 : Print ">" : Goto FELDER
ML:
GESLEN=0
For X=1 To AF
GESLEN=GESLEN+PRLEN(X)+PRAB(X)
Next X
If SN=1 Then GESLEN=GESLEN+7
Locate 14,AF+12 : Print Using "###";GESLEN
Return
ALLEDRU:
NR=0
Gosub PARTITEL
ZEILE=4
ALLEDRUNE:
Inc NR : Inc ZEILE
POSITION[NR]
If S$(NR)=Chr$(255) Then Goto ALLEDRUEN
If ZEILE=LINES Then Print #4,Chr$(12) : Print #4,TITEL$; : Print #4,""
If ZEILE=LINES and SN=1 Then Print #4," Nr.: ";
If ZEILE=LINES Then For X=1 To AF-1 : DRUGERMAN[N$(X),PRLEN(X),PRAB(X)] : Next X
If ZEILE=LINES Then DRUGERMAN[N$(AF),PRLEN(AF),0]
If ZEILE=LINES Then Print #4,NORM$ : ZEILE=4
Gosub MAKEFELDER
Gosub AUSDRUCK
Print #4,"" : Goto ALLEDRUNE
ALLEDRUEN:
Print #4,TITEL$
PA2$="Anzahl der Datens�tze:"+Str$(NR-1)
DRUGERMAN[PA2$,Len(PA2$),0]
Print #4,INIT$
Print #4,BEL$
Close 4
Goto REDRU
DABEDRU:
Locate 0,Y Curs : Input "Welcher Bereich soll ausgedruckt werden? ";BB$
If BB$="" Then Goto DRUCKEROK
Gosub BEREICH
Print : Print "Satz Nummer: "; : CX=X Curs : CY=Y Curs
If B1=0 Then Goto DRUCKEROK
Gosub PARTITEL
For NR=B1 To B2
POSITION[NR]
Gosub MAKEFELDER
Gosub AUSDRUCK
Print #4,""
Next NR
Print #4,TITEL$
PA2$="Anzahl der Datens�tze:"+Str$(B2-B1+1)
DRUGERMAN[PA2$,Len(PA2$),0]
Print #4,INIT$
Print #4,BEL$
Close 4
Goto REDRU
KRIDRU:
KX$="" : Locate 0,Y Curs
For X=1 To AF
Print X;" ";N$(X)
KX$=KX$+Str$(X)
Next X
Print : Print "Welcher Begriff? "
DB$=Chr$( Extension_22_01C4(KX$)) : Print DB$
DB=Val(DB$)
Cls 1
Print N$(DB);": "; : IN$= Extension_22_024E("",60)
NR=0
Gosub PARTITEL
DRUNE:
Inc NR
POSITION[NR]
If S$(NR)=Chr$(255) Then Print #4,"" : Print #4,INIT$ : Print #4,BEL$ : Close 4 : Goto REDRU
Gosub MAKEFELDER
IN= Extension_22_0006(Upper$(A$(DB)),Upper$(IN$))
If IN=0 Then Goto DRUNE
Gosub AUSDRUCK : Print #4,"" : Goto DRUNE
REDRU:
Gosub RY : Goto DRUCKEROK
AUSDRUCK:
If SN=1 Then Print #4, Using "####";NR; : Print #4,": ";
For X=1 To AF-1
DRUGERMAN[A$(X),PRLEN(X),PRAB(X)]
Next X
DRUGERMAN[A$(AF),PRLEN(AF),0]
Return
INIT:
INIT$=Chr$(27)+"c"
BEL$=Chr$(8)
GERMAN$=Chr$(27)+"(K"
UNDERLINE$=Chr$(27)+"[4m"
BOLD$=Chr$(27)+"[1m"
FINE$=Chr$(27)+"[4w"
ACHTEL$=Chr$(27)+"[0z"
WIDE$=Chr$(27)+"[6w"
NORM$=Chr$(27)+"[24m"+Chr$(27)+"[22m"+Chr$(27)+"[0w"
LINES=58
If BR=2 Then PREF$=FINE$+ACHTEL$ : LINES=87
If BR=1 Then PREF$=NORM$
If BR=0 Then PREF$=WIDE$
INITSTRING$=INIT$+GERMAN$+PREF$
TITEL$=UNDERLINE$+BOLD$
Open Out 4,"PRT:"
Print #4,INITSTRING$
Close 4
Return
PARTITEL:
Open Out 4,"PRT:"
Print #4,TITEL$;
Print #4,DN$
Print #4,""
Print #4,"Stand: ";
If AKT=1 Then Print #4,TMJ$
If AKT=0 Then Print #4,TMJ2$
Print #4,""
If SN=1 Then Print #4," Nr.: ";
For X=1 To AF-1
DRUGERMAN[N$(X),PRLEN(X),PRAB(X)]
Next X
DRUGERMAN[N$(AF),PRLEN(AF),0]
Print #4,NORM$
Return
FL:
Cls 1 : AUTOSAVE : Curs Off : On Error Goto FLFEHL
Restore DF : Gosub RD
Cls 1
On IN Goto RENA,DELFILE,DI,MA
FLFEHL:
Resume Next
DI:
Locate 10,2 : Show : Clear Key : LD$=Fsel$("","","Inhalt","") : Hide : Goto FL
RENA:
Show : Clear Key : OAM$=Fsel$("","","Alter Name","") : Hide
Locate 5,5 : Print "Alter Name: ";OAM$
Locate 5,7 : Input "Neuer Name: ";NNAM$
If NNAM$="" Then Goto FL
If NNAM$=OAM$ Then Goto FL
Rename OAM$ To NNAM$ : Goto FL
DELFILE:
Show : Clear Key : LD$=Fsel$("","","Datei","l�schen") : Hide
If LD$="" Then Goto FL
REQUESTER[LD$+" wirklich l�schen?","Ja","Nein"]
If Param=1 Then Kill LD$
Goto FL
SO:
If S$(1)=Chr$(255) Then Goto KEINEDATEN
Cls 1 : Locate 1,2 : Under On : Centre "Sortieren" : Print : Print : Under Off
AUTOSAVE
Centre " Nach welchem Kriterium soll sortiert werden?"
For X=1 To AF
ME$(X)=N$(X) : SX$(X)=SX$(X)+Str$(X)
Next X
ME$(AF+1)="Abbruch" : ME$(0)=""
ANZ=AF+1
MYMEN[ANZ]
Wait 5
SZ=Param
If SZ=ANZ Then Goto MA
SOV=SOF
SOF=SZ
REQUESTER["Sortiervorgang","aufsteigend","absteigend"]
WORKING
Show : Change Mouse 3 : AUF=Param : If AUF=2 Then SOF=SOF*(-1)
If SOF=SOV Then Goto SOVEND
If SZ=1 Then Goto SONORM
For L=1 To MX
NR=L : Gosub MAKEFELDER : S$(L)=A$(SZ)+"|"
For Q=1 To AF
If Q<>SZ Then S$(L)=S$(L)+A$(Q)+"|"
Next Q
Next L
SONORM:
Gosub SCRYPT : Gosub SOR : Gosub SENCRYPT
If SZ<>1 Then Gosub ALTEREIHE
SOVEND:
SOTE=1 : Gosub UP : SOTE=0
Change Mouse 1 : Hide : WORKOFF : Goto RM
ALTEREIHE:
For I=1 To MX
NR=I : A$(SZ)=Left$(S$(I),Instr(S$(I),"|")-1)
M$=Right$(S$(I),Len(S$(I))-Instr(S$(I),"|")) : S$(I)=M$ : If SZ<2 Then Goto ALTEREIHE2
For Y=1 To SZ-1
A$(Y)=Left$(S$(I),Instr(S$(I),"|")-1)
M$=Right$(S$(I),Len(S$(I))-Instr(S$(I),"|")) : S$(I)=M$
Next Y
If SZ=AF Then Goto ALTEREIHE3
ALTEREIHE2:
If SZ=AF Then Goto ALTEREIHE3
For Y=SZ+1 To AF
A$(Y)=Left$(S$(I),Instr(S$(I),"|")-1)
M$=Right$(S$(I),Len(S$(I))-Instr(S$(I),"|")) : S$(I)=M$
Next Y
ALTEREIHE3:
Gosub MAKESTRING
Next I
Return
SOR:
Sort S$(MX)
If AUF=1 Then Return
For X=1 To MX/2
Swap S$(MX-X+1),S$(X)
Next X
Return
LCOUNT:
LCY$="0123456789 A�BCDEFGHIJKLMNO�PQRSTU�VWXYZ&!@#$%*()+-='<>?,.:;/"
For LC=1 To Len(LCY$)
SB(LC)=0
Next LC
For NR=1 To MX
Gosub MAKEFELDER
LCZ=Instr(LCY$,Upper$(Left$(A$(SOF),1))) : If LCZ>0 Then SB(LCZ)=SB(LCZ)+1
Next NR
LCY$=""
Return
IM:
Show
Cls 1 : Home : Print : Centre "GoAmiga!-Datei.DAT zu JD-Datei.seq konvertieren."
Print : Centre "Es werden 5 Phasen ben�tigt!"
REQUESTER["GoAmiga!-Datei importieren?","Ja","Nein"]
If Param=2 Then Goto MA
Clear Key : DD$=Fsel$("*.DAT","","GoAmiga!-Datei","konvertieren")
If DD$="" Then Goto MA
On Error Goto KONV_FEHLER
Hide
SOURCE$=DD$
DEST$=DD$+".conv"
Print : Print : Print "Phase 1"
FILE_COPY[SOURCE$,DEST$]
Print "Phase 2"
Open In 8,DD$+".conv"
For X=1 To MX
Input #8,S$(X)
Next X
Close
For X=1 To AF
N$(X)="Feld"+Str$(X)
Next X
Print "Phase 3"
FELEN=0
For ZZX=1 To AF
FELEN=Max(FELEN,Len(N$(ZZX)))
MXLEN(ZZX)=0 : PRLEN(ZZX)=0
Next ZZX
Print "Phase 4"
For NR=1 To MX
Gosub MAKEFELDER
For ZZX=1 To AF
A=Len(A$(ZZX)) : MXLEN(ZZX)=Max(MXLEN(ZZX),A)
Next ZZX
Next NR
Print "Phase 5"
For ZZX=1 To AF
PRLEN(ZZX)=Max(PRLEN(ZZX),MXLEN(ZZX))
PRLEN(ZZX)=Max(Len(N$(ZZX)),PRLEN(ZZX))
Next ZZX
Gosub LCOUNT
Cls 1 : Locate 0,1 : Centre "GoAmiga!-Datei ist konvertiert!"
Locate 0,3 : Centre "Anzahl der Datens�tze:"+Str$(MX)
Locate 0,5 : Centre "Freier Speicher:"+Str$(Free)+" Bytes"
REQUESTER["Sequenz abspeichern?","Ja","Nein"]
If Param=2 Then Goto MA
JD$=Left$(DD$,Len(DD$)-4)+".seq"
Open Out 8,JD$
Print #8,"JD-Datei-Sequenz"
Print #8,TMJ$
Print #8,SOF
Print #8,AF
Print #8,0
Print #8,0
For X=1 To AF
Print #8,PRLEN(X)
Print #8,PRAB(X)
Next X
Print #8,FELEN
For X=1 To AF
Print #8,N$(X)
Print #8,MXLEN(X)
Next X
DN$=Left$(DD$,Len(DD$)-4)
Print #8,DN$
Print #8,MX
For NR=1 To 61
Print #8,SB(NR)
Next NR
For X=1 To MX
Print #8,S$(X)
Next X
Close 8
Kill DD$+".conv"
Goto MA
SCRYPT:
For I=1 To MX
S$(I)= Extension_22_00F8(S$(I))
Next I
Return
SENCRYPT:
For I=1 To MX
S$(I)= Extension_22_0108(S$(I))
Next I
Return
SH:
Cls 1,0,0 To 680,219 : Change Mouse 1
Locate 1,1 : Centre DN$ : Locate 0,3
Gosub MAKEFELDER
For TX=1 To AF
Print N$(TX)+Space$(FELEN-Len(N$(TX)))+": ";
For X=1 To Len(A$(TX))
T$=Mid$(A$(TX),X,1)
If T$="{" Then T$=","
Print T$;
Next
Print
Next TX
NR$=Str$(NR)
MX$=Str$(MX)-" "
Locate 1,1
If AKT=1 Then Print TMJ$
If AKT=0 Then Print TMJ2$
Locate Screen Width/8-Len(NR$)-Len(MX$)-6,1 : Print "Nr.:"+NR$+"/"+MX$
Return
MAKESTRING:
I=NR : If A$(1)=" " Then Return
S$(I)=""
For X=1 To AF
S$(I)=S$(I)+A$(X)+"|"
Next X
Return
MAKEFELDER:
I=NR : If S$(I)=Chr$(255) Then Return
C$=S$(I)
For X=1 To AF
A$(X)=Left$(C$,Instr(C$,"|")-1)
C$=Right$(C$,Len(C$)-Instr(C$,"|"))
Next X
Return
RM:
Gosub RY : Goto MA
RY:
Clear Key : Bell : Change Mouse 1
RY2:
A$=Inkey$
If Mouse Key=1 Then Return
If A$<>"" Then Return
Goto RY2
KEINEDATEN:
MELDUNG["Es befinden sich keine Daten im Speicher!"]
Goto MA2
SUFENICHT:
MELDUNG["Suche erfolglos abgebrochen!"]
Goto SU
CLEAR:
For X=1 To LAST
S$(X)=Chr$(255)
Next X
For X=1 To 9
N$(X)="" : A$(X)="" : MM$(X)="" : A2$(X)="" : B$(X)="" : NB$(X)="" : REP$(X)="" : SX$(X)=""
NEU(X)=0 : PRLEN(X)=0 : PRAB(X)=0 : MXLEN(X)=0 : MXLEN2(X)=0 : MLEN(X)=0 : PRLEN2(X)=0 : PRAB2(X)=0
Next X
Return
RD:
Read ME$(0)
Read ANZ
If ANZ=99 Then Goto GSU
For X=1 To ANZ
Read ME$(X)
Next X
Goto CON
GSU:
For X=1 To 3
Read ME$(X)
Next X
For X=1 To AF
ME$(X+3)=N$(X)
Next X
ANZ=AF+3
CON:
MYMEN[ANZ]
IN=Param
Return
LONG:
DILEN=Len("JD-Datei-Sequenz")+2
DILEN=DILEN+Len(TMJ2$)+2
DILEN=DILEN+Len(DN$)+2
DILEN=DILEN+Len(Str$(AF))+2
DILEN=DILEN+Len(Str$(SN))+2
DILEN=DILEN+Len(Str$(BR))+2
DILEN=DILEN+Len(Str$(FELEN))+2
DILEN=DILEN+Len(Str$(MX))+2
For X=1 To AF
DILEN=DILEN+Len(Str$(PRLEN(X)))+2
DILEN=DILEN+Len(Str$(PRAB(X)))+2
DILEN=DILEN+Len(N$(X))+2
DILEN=DILEN+Len(Str$(MXLEN(X)))+2
Next X
For X=1 To MX
DILEN=DILEN+Len(S$(X))+2
Next X
For X=1 To 61
DILEN=DILEN+Len(Str$(SB(X)))+2
Next
Return
BEREICH:
Extension_22_0162 : Extension_22_0150(BB$)
B1= Extension_22_0190 : B2= Extension_22_01A4
B1=Max(B1,1) : B2=Min(B2,MX)
Return
MEM:
Data 2,"RAM DISK:","BOOTRAM:"
HM:
Data "Datei-Verwaltung",16,"Laden","Bl�ttern","Neue Maske","Eingabe","Sortieren","Drucken","Farbe","Update"
Data "Speichern","Suchen","Maske �ndern","Daten �ndern","Daten Inst/Del","Disk-Befehle","ASC-Import","Ende"
LM:
Data "",3,"Laden","Menu","Anh�ngen"
SM:
Data "",2,"�berschreiben","Neuer Name"
BM:
Data "Bl�ttern",5,"Alle","Gezielt","Bereich","Liste","Menu"
SUM:
Data "Suchen",99,"Menu","Ohne Kriterium","Mit Kriterium"
DID:
Data "Daten Inst/Del",4,"Satz l�schen","Satz einf�gen","Bereich l�schen","Menu"
DM:
Data "Drucken",5,"Alle","Bereich","Kriterium","Einstellungen","Menu"
DF:
Data "Disk-Befehle",4,"Umbenennen","L�schen","Inhalt","Menu"
Procedure SETUP
Close Editor
Screen Open 0,680,257,4,Hires
Limit Mouse 112,42 To 447,298
Curs Off : Flash Off : Hide
SET_COL
Request Off
TITEL
SET_TIME
End Proc
Procedure MYMEN[ANZ]
Shared ME$()
Reset Zone
BREITE=Screen Width
BREITE=BREITE/8
Locate 1,3 : Under On : Centre ME$(0) : Under Off
BLEN=0
For X=1 To ANZ
ALEN=Len(ME$(X)) : BLEN=Max(BLEN,ALEN)
Next
For X=1 To ANZ
ME$(X)= Extension_22_011A(ME$(X),BLEN,0)
Next
Inverse On : Show : Curs Off
Wait 10
LL=2*BLEN+4
L1=(BREITE-LL)/2
L2=L1+4+BLEN
P=4
ANZ1=ANZ/2
If ANZ/2*2<ANZ Then ANZ1=ANZ1+1
For X=1 To ANZ1
K$=ME$(X)
P=P+2
Box L1*8-1,P*8-1 To L1*8+BLEN*8,P*8+8
Locate L1,P
Print Zone$(K$,X)
Next
P=4
For X=ANZ1+1 To ANZ
K$=ME$(X)
P=P+2
Box L2*8-1,P*8-1 To L2*8+BLEN*8,P*8+8
Locate L2,P
If K$<>"" Then Print Zone$(K$,X)
Next
GMEN:
IN=Mouse Zone
If Mouse Key=1 and IN>0 and IN=<ANZ Then Goto GO
Goto GMEN
GO:
LL=2*BLEN+4
L1=(BREITE-LL)/2
L2=L1+4+BLEN
P=4
ANZ1=ANZ/2
If ANZ/2*2<ANZ Then ANZ1=ANZ1+1
For X=1 To ANZ1
P=P+2
Locate L1,P
If IN=X Then Inverse Off
Print ME$(X)
If IN=X Then Inverse On
Next
P=4
For X=ANZ1+1 To ANZ
P=P+2
Locate L2,P
If IN=X Then Inverse Off
If ME$(X)<>"" Then Print ME$(X)
If IN=X Then Inverse On
Next
Hide
Inverse Off
End Proc[IN]
Procedure GC[P]
Shared KK,AF,ML,NR,MX,B1,B2,SF
Show : Curs Off
ANZ=1
If P=0 Then ANZ=20
Cls 1,0,219 To Screen Width,Screen Height
Box 44,219 To 629,235
Locate 9,28
Print "|< <<< << < STOP > >> >>> >|";
If P=0 Then Cls 1,0,236 To 680,250 : Goto NOPR
Box 44,236 To 629,250
Locate 10,30
Print "AUSDRUCK L�SCHEN �NDERN DUPLIZIEREN ";""
Box 44,235 To 190,250 : Set Zone 10,36,235 To 182,250
Box 190,235 To 336,250 : Set Zone 11,190,235 To 336,250
Box 336,235 To 482,250 : Set Zone 12,336,235 To 482,250
Box 482,235 To 629,250 : Set Zone 13,482,235 To 629,250
NOPR:
Box 44,219 To 109,235 : Set Zone 1,44,219 To 109,235
Box 109,219 To 174,235 : Set Zone 2,109,219 To 174,235
Box 174,219 To 239,235 : Set Zone 3,174,219 To 239,235
Box 239,219 To 304,235 : Set Zone 4,239,219 To 304,235
Box 304,219 To 369,235 : Set Zone 5,304,219 To 369,235
Box 369,219 To 434,235 : Set Zone 6,369,219 To 434,235
Box 434,219 To 499,235 : Set Zone 7,434,219 To 499,235
Box 499,219 To 564,235 : Set Zone 8,499,219 To 564,235
Box 564,219 To 629,235 : Set Zone 9,564,219 To 629,235
If P=0 and KK>1 Then Locate 3,28 : Print "<=" : Box 15,219 To 44,235 : Set Zone 14,15,219 To 44,235
If P=0 and ML<AF Then Locate 79,28 : Print "=>" : Box 629,219 To 658,235 : Set Zone 15,629,219 To 658,235
NR1=NR
If P=0 Then NR1=NR1-20
PMCHECK:
If SF=0 Then If Mouse Key=2 Then NRFADER[ANZ,NR1,B1,B2] : NR1=Param : Z=NR1-NR : Goto NEWEX
IN=Mouse Zone
MK= Extension_22_0080(IN,1,13)
MK2= Extension_22_0080(IN,1,9)
MK3= Extension_22_0080(IN,14,15)
If P=1 Then If Mouse Key=1 and MK=1 Then Goto PMCH
If Mouse Key=1 and MK2=1 Then Goto PMCH
If P=0 Then If Mouse Key=1 and MK3=1 Then Goto PMCH2
Goto PMCHECK
NEWEX:
If P=0 Then Z=Z+20
Goto NEWEX2
PMCH2:
If IN=14 Then KK=KK-1 : If KK<1 Then KK=1 : Goto PMCHECK
If IN=15 Then KK=KK+1 : If ML=AF Then KK=KK-1 : Goto PMCHECK
Z=5033
PMCH:
If IN=1 Then Z=-3000
If IN=2 Then Z=-100
If IN=3 Then Z=-20
If IN=4 Then Z=-1
If IN=5 Then Z=5000
If IN=6 Then Z=1
If IN=7 Then Z=20
If IN=8 Then Z=100
If IN=9 Then Z=3000
If IN=10 Then Z=5072
If IN=11 Then Z=5076
If IN=12 Then Z=5196
If IN=13 Then Z=5068
NEWEX2:
Hide
End Proc[Z]
Procedure POSITION[NR]
Shared B1,B2
Fix(6)
VSX#=Screen Width-2
VMX0#=B1 : VMX1#=B2+1
VNR#=NR : VMX#=VMX1#-VMX0#
If VNR#<1 Then VNR#=1
VX#=VMX#/VNR# : VV#=VMX#/VX# : VV#=VMX#/VV#
VY#=VSX#-(VSX#/VV#)+1 : VY#=VSX#-VY#
If VNR#=1 Then Ink 0 : Bar 1,0 To VSX#,5
Ink 3 : Box 0,0 To VSX#+1,5
If VY#>VSX# Then VY#=VSX#
X1=1 : X2=VY# : If X1=>X2 Then X2=X1+1
Ink 2 : Bar X1,1 To X2,4
Fix(16)
End Proc
Procedure NRFADER[ANZ,NR1,MX0,MX1]
Fix(6)
VSX#=Screen Width-2
SX=Screen Width-1
HOEHE=Screen Height
Get Block 241,0,0,Screen Width,HOEHE
Cls 1,0,219 To Screen Width,HOEHE
VMX0#=MX0 : VMX1#=MX1+1
VNR#=NR1 : VMX#=VMX1#-VMX0#
VANZ#=ANZ
VPROP#=VMX#/VANZ#
VPROP#=VSX#/VPROP#/2
If VPROP#<1 Then VPROP#=1
If VPROP#>VSX# Then VPROP#=VSX#
NR$=Str$(NR1) : NR$=Right$(NR$,Len(NR$)-1)
VX#=VMX#/VNR# : VV#=VMX#/VX# : VV#=VMX#/VV#
VY#=VSX#-(VSX#/VV#)+1 : VY#=VSX#-VY#
VP#=VY# : If VP#>VSX#-(Len(NR$)*8) Then VP#=VSX#-(Len(NR$)*8)
REG:
Text 0,HOEHE-16,Space$(Screen Width/8)
Text VP#,HOEHE-16,NR$
Ink 0 : Bar 1,HOEHE-12 To VSX#,HOEHE-2
Ink 3 : Box 0,HOEHE-13 To VSX#+1,HOEHE-1
V1#=VY#-VPROP# : If V1#<1 Then V1#=1
V2#=VY#+VPROP# : If V2#>VSX# Then V2#=VSX#
PROP=VPROP# : PROP=PROP/2
X1=V1# : X2=V2# : If X1=>X2 Then X2=X1+1
X1=Min(SX-PROP,X1) : X1=Max(1,X1-PROP) : X2=Min(SX,X2+PROP) : X2=Max(2+PROP,X2)
Ink 2 : Bar X1,HOEHE-12 To X2,HOEHE-1
While Mouse Key=2 : Wend
UNREG:
If Mouse Key=2 Then Goto FEX
If Mouse Key<>1 Then Goto UNREG
Y=X Screen(X Mouse)
If Y Screen(Y Mouse)<HOEHE-12 or Y Screen(Y Mouse)>HOEHE-1 Then Goto UNREG
If Y<1 or Y>Screen Width-1 Then Goto UNREG
VY#=Y
VP#=VY#
VSX#=VSX#-2
If VY#=VSX# Then NR2=MX1 : Goto UNRECH
VX#=VSX#/VY# : VV#=VSX#/VX# : VV#=VSX#/VV#
VNR#=VMX#-(VMX#/VV#)+1 : VNR#=VMX#-VNR#
NR2=VNR#
NR2=NR2+MX0
If NR2<MX0 Then NR2=MX0
If NR2>MX1 Then NR2=MX1
UNRECH:
NR$=Str$(NR2) : NR$=Right$(NR$,Len(NR$)-1)
If VP#>VSX#-(Len(NR$)*8) Then VP#=VSX#-(Len(NR$)*8)
VSX#=VSX#+2
Goto REG
FEX:
If NR2=0 Then NR2=NR1
Put Block 241,0,0
Del Block 241
Fix(16)
End Proc[NR2]
Procedure DRUGERMAN[S$,PRLEN,PRAB]
If PRLEN=0 Then Goto EXDRU
U=0
If Len(S$)>=PRLEN Then Y=PRLEN
If Len(S$)<PRLEN Then Y=Len(S$) : U=1
P$=""
For X=1 To Y
P$=P$+Mid$(S$,X,1)
Next
P$= Extension_22_006C(P$,"{",",")
P$= Extension_22_006C(P$,Chr$(228),"{")
P$= Extension_22_006C(P$,Chr$(246),"|")
P$= Extension_22_006C(P$,Chr$(252),"}")
P$= Extension_22_006C(P$,Chr$(223),"~")
P$= Extension_22_006C(P$,Chr$(196),"[")
P$= Extension_22_006C(P$,Chr$(214),"\")
P$= Extension_22_006C(P$,Chr$(220),"]")
Print #4,P$;
If U=1 Then Print #4,Space$(PRLEN-Len(S$));
If PRAB>0 Then Print #4,Space$(PRAB);
EXDRU:
End Proc
Procedure REQUESTER[A$,B$,C$]
Show
BREITE=Screen Width : HOEHE=Screen Height
HALB=BREITE/2 : TBREITE=BREITE/8 : HBREIT=TBREITE/2
A=Len(A$)*8+60
B=Len(B$)*8+60
C=Len(C$)*8+60
LASTLENG=Max(A,B+C)
Get Block 241,0,0,BREITE,HOEHE
Ink 0 : Bar HALB-LASTLENG/2+5,HOEHE-41 To HALB+LASTLENG/2+5,HOEHE-6
Ink 1 : Bar HALB-LASTLENG/2,HOEHE-46 To HALB+LASTLENG/2,HOEHE-11
Ink 2 : Box HALB-LASTLENG/2,HOEHE-46 To HALB+LASTLENG/2,HOEHE-11
Locate 1,27 : Centre A$
X1=HALB-LASTLENG/2+20 : X2=HALB-LASTLENG/2+B-20
X3=HALB+LASTLENG/2-C+20 : X4=HALB+LASTLENG/2-20
Box X1,HOEHE-27 To X2,HOEHE-15
Box X3,HOEHE-27 To X4,HOEHE-15
X Mouse=X Hard(X1+(X2-X1)/2) : Y Mouse=Y Hard(HOEHE-22)
Curs Off
Locate HBREIT-(LASTLENG-60)/16,29 : Print Zone$(B$,1)
Locate HBREIT+(LASTLENG-60)/16-Len(C$),29 : Print Zone$(C$,2)
REQUES1:
IN=Mouse Zone
If Mouse Key=1 Then If IN<>0 Then Goto REQUES2
Goto REQUES1
REQUES2:
Put Block 241,0,0
Del Block 241
Hide
End Proc[IN]
Procedure MELDUNG[A$]
Show : Curs Off : Change Mouse 1
BREITE=Screen Width : HOEHE=Screen Height : HALB=BREITE/2
B$=""
IN=Instr(A$,Chr$(10))
If IN Then B$=Mid$(A$,IN+1) : A$=Left$(A$,IN-1)
X=Max(Len(B$),Len(A$))
Y=HALB-18 : If X/2*2=X Then Y=HALB
X=X*4+8
Z=HOEHE-23 : If IN Then Z=HOEHE-31
Get Block 241,0,0,BREITE,HOEHE
Ink 0 : Bar Y-X+3,Z+3 To HALB+X+3,HOEHE-2
Ink 1 : Bar Y-X,Z To HALB+X,HOEHE-5
Ink 2 : Box Y-X,Z To HALB+X,HOEHE-5
X=30 : If IN Then X=29
Locate 1,X : Centre A$
If IN Then Locate 1,30 : Centre B$
Bell : Wait 50
While Mouse Key<>1 : Wend
Put Block 241,0,0
Del Block 241
Hide
End Proc
Procedure CHANGERGB
Shared FC,BC
NCOLS=Screen Colour
Cls : Show
Dim RGB(4)
Reserve Zone 40
Ink 0,0
Bar 13,8 To 217,112
Ink FC,BC
Bar 8,3 To 212,107
Ink BC,FC
Box 9,4 To 211,106
Ink BC,FC
A=0 : Repeat
Bar 15+A*20,6 To 30+A*20,104
Set Zone A+1,15+A*20,6 To 30+A*20,104
Inc A
Until A=3
A=0 : Repeat
Draw 10,6+A*6 To 75,6+A*6
Inc A
Until A=17
A=0 : Repeat
Ink A,A : X=A mod 8 : Y=A/8
Bar X*16+80,Y*16+8 To X*16+95,Y*16+23
Set Zone A+4,X*16+80,Y*16+8 To X*16+95,Y*16+23
RGB(A)=Colour(A)
Inc A : Until A>=Min(32,NCOLS)
Ink BC,FC
Box 79,7 To 96+16*X,24+16*Y
Box 80,75 To 140,85
Text 91,83,"Reset"
Box 152,75 To 202,85
Text 162,83,"Save"
Box 80,90 To 140,100
Text 86,98,"Cancel"
Box 152,90 To 202,100
Text 165,98,"Use"
Set Zone 39,152,75 To 202,85
Set Zone 38,80,75 To 140,85
Set Zone 36,80,90 To 140,100
Set Zone 37,152,90 To 202,100
Ink SELCOL
Bar 195,58 To 201,67
Ink BC : Box 194,57 To 202,68
SFADERS[SELCOL]
OK=0 : While OK=0
While Mouse Key=0 : Wend : YM=Y Screen(Y Mouse) : Z=Mouse Zone
If Extension_22_0080(Z,1,3)=1
CFADERS[SELCOL,Z-1,YM]
SFADERS[SELCOL]
End If
If Extension_22_0080(Z,4,35)
SELCOL=Z-4
Ink SELCOL
Bar 195,58 To 201,67
SFADERS[SELCOL]
Ink SELCOL
End If
If Z=37
OK=1
End If
If Z=39
Open Out 1,"df1:JDD.col"
For X=0 To NCOLS-1
Print #1,Colour(X)
Next
Close
OK=1
End If
If Z=36 Then Gosub RESET : OK=1
If Z=38 Then Gosub RESET
Wend
Pop Proc
RESET:
A=0 : Repeat
Colour A,RGB(A) : SPCOL[A,RGB(A)]
Inc A : Until A>=Min(32,NCOLS)
Return
End Proc
Procedure CFADERS[S,F,YM]
Dim R(2)
C=Colour(S)
R(0)=C/256
R(1)=(C/16) mod 16
R(2)=C mod 16
V=Max(0,Min(15,15-(YM-7)/6))
R(F)=V
Colour S,(R(0)*256+R(1)*16+R(2))
SPCOL[S,Colour(S)]
End Proc
Procedure SFADERS[S]
Shared RGBO,BC,FC
Dim R(2)
C=RGBO
R(0)=C/256
R(1)=(C/16) mod 16
R(2)=C mod 16
Ink BC,BC
A=0 : Repeat
V=(15-R(A))*6 : Bar 17+20*A,7+V To 28+20*A,12+V
Inc A
Until A=3
C=Colour(S)
RGBO=C
R(0)=C/256
R(1)=(C/16) mod 16
R(2)=C mod 16
Ink BC,FC
Text 80,66,"Col"+Right$(" "+Str$(S),2)+" Val:$"+Right$("000"+Mid$(Hex$(RGBO),2),3)
Ink FC,FC
A=0 : Repeat
Ink FC,FC
V=(15-R(A))*6 : Box 17+20*A,7+V To 28+20*A,12+V
Ink S
Bar 18+20*A,8+V To 27+20*A,11+V
Inc A
Until A=3
End Proc
Procedure SPCOL[A,B]
If Length(1)>0
Doke Start(1)+2+8*Length(1)+2*A,B
End If
End Proc
Procedure INVERS[LL]
XC=X Curs : YC=Y Curs
Inverse On
Print Space$(LL)
Locate XC,YC
Inverse Off
End Proc
Procedure SET_COL
If Exist("devs:JDD.col")
Open In 1,"devs:JDD.col"
For X=0 To 3
Input #1,FW
Colour X,FW
Next
Close 1
End If
End Proc
Procedure TITEL
Cls 1
Locate 1,24 : Centre "Dieses Programm wurde in A M O S geschrieben"
C=2
WA2:
If K=1 Then Goto RES
If C=1 Then C=0
If C<0 Then C=1 : K=1
Ink C
Pen C
Locate 1,9
Centre "Datei-Verwaltung" : Print : Print
Centre "(C) 19xx" : Print
Centre "C16-Version 1985" : Print
Centre "Amiga-Version 1991" : Print
Centre "J�rg Dommermuth"
X1=242 : X2=429
Y1=70 : Y2=120
Polyline X1,83 To X2,83
WA:
Wait 5
Box X1,Y1 To X2,Y2
X1=X1-10 : X2=X2+10
Y1=Y1-5 : Y2=Y2+5
If Y1=25 Then C=C-1 : Goto WA2
Goto WA
RES:
Pen 2 : Ink 2
End Proc
Procedure WORKING
Curs Off
BREITE=Screen Width : HOEHE=Screen Height : HALB=BREITE/2
A$="Ich arbeite..."
X=Len(A$)
Y=HALB-18 : If X/2*2=X Then Y=HALB
X=X*4+8
Ink 0 : Bar Y-X+3,HOEHE-20 To HALB+X+3,HOEHE-2
Ink 1 : Bar Y-X,HOEHE-23 To HALB+X,HOEHE-5
Ink 2 : Box Y-X,HOEHE-23 To HALB+X,HOEHE-5
Locate 1,30 : Centre A$
End Proc
Procedure WORKOFF
Curs Off
BREITE=Screen Width : HOEHE=Screen Height : HALB=BREITE/2
A$=" Fertig... "
X=Len(A$)
Y=HALB-18 : If X/2*2=X Then Y=HALB
X=X*4+8
Ink 0 : Bar Y-X+3,HOEHE-20 To HALB+X+3,HOEHE-2
Ink 1 : Bar Y-X,HOEHE-23 To HALB+X,HOEHE-5
Ink 2 : Box Y-X,HOEHE-23 To HALB+X,HOEHE-5
Locate 1,30 : Centre A$
End Proc
Procedure FILE_COPY[SOURCE$,DEST$]
Shared MX,AF
FIND_LENGTH[SOURCE$]
FILE_LENGTH=Param
LONG_FILE_COPY[SOURCE$,DEST$,FILE_LENGTH]
End Proc
Procedure FIND_LENGTH[SOURCE$]
Open In 1,SOURCE$
L=Lof(1)
Close
End Proc[L]
Procedure LONG_FILE_COPY[SOURCE$,DEST$,L]
Shared MX,AF
Open In 1,SOURCE$
Open Out 2,DEST$
MX=0 : KOMMA=0 : AF=1
For X=1 To L
T$=""
T$=Input$(1,1)
If T$=Chr$(34) Then If KOMMA=0 Then KOMMA=1 : Goto SKIP
If T$=Chr$(34) Then If KOMMA=1 Then KOMMA=0
SKIP:
If KOMMA=1 Then If T$="," Then T$="{"
If KOMMA=0 Then If T$="," Then T$="|" : AF=AF+1
If T$=Chr$(34) Then T$=""
If T$=Chr$(13) Then T$="|"+Chr$(13)+Chr$(10) : MX=MX+1 : BF=AF : AF=1
If T$<>"" Then Print #2,T$;
Next
Close
AF=BF
End Proc
Procedure AUTOSAVE
Shared AKT
If AKT=0 Then Timer=0
If Timer<45000 Then Pop Proc
MELDUNG["Es sind 15 Minuten vergangen!"+Chr$(10)+"Bitte Datei speichern!"]
End Proc
Procedure SET_TIME
TM$= Extension_22_004C
UHR2:
Cls 1 : Locate 23,5 : Print "Bitte Datum eingeben! ("+TM$+")"
Locate 34,7 : Clear Key : Input Z$ : Curs Off
Z$= Extension_22_00E8(Z$)
If Z$="" Then Locate 36,7 : Print TM$
P= Extension_22_005A(Z$,".") : If P<>2 Then Pop Proc
P= Extension_22_0080(Len(Z$),6,10) : If P=0 Then Pop Proc
If Instr(Right$(Z$,4),".")=0 Then Z$=Left$(Z$,Len(Z$)-4)+Right$(Z$,2)
Extension_22_002C(Z$)
End Proc